package com.spring.lesson001.demo12.factory;

import java.lang.reflect.InvocationHandler;

/**
 * Proxy: JDK动态代理中主要的一个类，里面有一些静态方法经常用到,可以为接口生成代理类
 *
 * @author vhans
 */
public class MyProxy {

    /**
     * 为指定的接口创建代理类，返回代理对象的Class对象
     *
     * @param loader     定义代理类的类加载器
     * @param interfaces 指定需要代理的接口列表
     * @return 代理对象的Class对象
     */
    public static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces) {
        return null;
    }

    /**
     * 创建代理类的实例对象
     *
     * @param loader     定义代理类的类加载器
     * @param interfaces 指定需要代理的接口列表
     * @param h          代理处理接口
     * @return 实例对象
     */
    public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) {
        return null;
    }

    /**
     * 判断指定的类是否是一个代理类
     *
     * @param cls 指定的类
     * @return 结果
     */
    public static boolean isProxyClass(Class<?> cls) {
        return false;
    }

    /**
     * 获取代理对象的InvocationHandler对象
     *
     * @param proxy 代理对象
     * @return InvocationHandler对象
     */
    public static InvocationHandler getInvocationHandler(Object proxy) {
        return null;
    }
}
